package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import vista.VentanaAgasajadosModeloTabla;
import vista.VentanaAnfitrionesModeloTabla;
import vista.VentanaConsultarEvento;
import vista.VentanaInvitadosModeloTabla;
import modelo.Anfitrion;
import modelo.AnfitrionDAO;
import modelo.Evento;
import modelo.EventoDAO;
import modelo.Invitado;
import modelo.InvitadoDAO;
import modelo.Organizacion;
import modelo.Persona;
import modelo.PersonaDAO;



   public class ControladorVentanaConsultarEvento implements ActionListener {
	   
	   private VentanaConsultarEvento ventanaConsultarEvento;
	   private Evento evento;
	   private Organizacion organizacion;
	   private ArrayList<Invitado> invitados = new ArrayList();
	   private ArrayList<Persona> agasajados = new ArrayList();
	   private ArrayList<Anfitrion> anfitriones = new ArrayList();
	   
	   private EventoDAO eventoDao;
	   private AnfitrionDAO anfitrionDao;
	   private InvitadoDAO invitadoDao;
	   private PersonaDAO personaDao;
	   
	
	public ControladorVentanaConsultarEvento(Organizacion organizacion) {
		
		ventanaConsultarEvento =  new VentanaConsultarEvento();
		ventanaConsultarEvento.setLocationRelativeTo(null);
		ventanaConsultarEvento.setVisible(true);	
		ventanaConsultarEvento.agregarListener(this);
		this.organizacion = organizacion;
		
	
		this.ventanaConsultarEvento.setListadoAgasajado(new VentanaAgasajadosModeloTabla(agasajados));
		this.ventanaConsultarEvento.setListadoInvitados(new VentanaInvitadosModeloTabla(invitados));
		this.ventanaConsultarEvento.setListadoAnfitriones(new VentanaAnfitrionesModeloTabla(anfitriones));

		this.ventanaConsultarEvento.BloquearEnabled(false);
		this.ventanaConsultarEvento.BloquearVisible(false);
	}


	@Override
	public void actionPerformed(ActionEvent e) {		
		if (e.getActionCommand().equalsIgnoreCase("Buscar")){
			
			buscar();
		}
		else if (e.getActionCommand().equalsIgnoreCase("Salir")){
			
			this.ventanaConsultarEvento.setVisible(false);
			this.ventanaConsultarEvento.limpiarCampos();
			this.ventanaConsultarEvento.BloquearEnabled(false);
			this.ventanaConsultarEvento.BloquearVisible(false);
			
		}
		else if (e.getActionCommand().equalsIgnoreCase("Limpiar")){
			
			limpiar();
		}		
		
	}


	private void buscar() {
		
		if(this.ventanaConsultarEvento.getTxtCodigoConsultarEvento().equalsIgnoreCase("")){
			this.ventanaConsultarEvento.mostrarMensaje("Debe Ingresar el codigo del evento a solicitar");
		} else {
			
			String codigo, direccion, fecha, hora, tipoEvento;
			int indice;
			Evento evento;
			codigo = this.ventanaConsultarEvento.getTxtCodigoConsultarEvento();
			
			

			//indice = this.organizacion.buscarEvento(codigo);
			eventoDao = new EventoDAO();
			Evento eventoo = new Evento();
			eventoo = eventoDao.buscarEvento(codigo);

			//if (indice < 0){
				
			if (eventoo == null){
				
				this.ventanaConsultarEvento.mostrarMensaje("Evento no Existe");
				
				
			} else {
				
				//evento = this.organizacion.getUnaEvento(indice);
				direccion = eventoo.getDireccion();	
				fecha = eventoo.getFecha();
				hora = eventoo.getHora();	
				tipoEvento = eventoo.getTipoEvento();
				
				
				//invitados = evento.getInvitados();
				
				invitadoDao = new InvitadoDAO();
				ArrayList<Invitado> invitadoss = invitadoDao.consultarInvitado(codigo);

				
				//agasajados = evento.getAgasajados();
			
				//anfitriones = evento.getAnfitriones();
				personaDao = new PersonaDAO();
				ArrayList<Persona> agasajadoss = personaDao.consultarPersona(codigo);
				
				
				anfitrionDao = new AnfitrionDAO();
				List<Anfitrion> anfitrioness = anfitrionDao.consultarAnfitrion(codigo);


				ventanaConsultarEvento.setDatos(direccion, fecha, hora, tipoEvento);
				
				
				this.ventanaConsultarEvento.setListadoAgasajado(new VentanaAgasajadosModeloTabla(agasajadoss));
				this.ventanaConsultarEvento.setListadoInvitados(new VentanaInvitadosModeloTabla(invitadoss));
				this.ventanaConsultarEvento.setListadoAnfitriones(new VentanaAnfitrionesModeloTabla(anfitrioness));
				this.ventanaConsultarEvento.BloquearEnabled(false);
				this.ventanaConsultarEvento.BloquearVisible(true);
				this.ventanaConsultarEvento.habilitarOpciones(false);				
			}

		}
		
	}


	private void limpiar() {
	
		this.ventanaConsultarEvento.limpiarCampos();
		this.ventanaConsultarEvento.BloquearEnabled(false);
		this.ventanaConsultarEvento.BloquearVisible(false);
		this.ventanaConsultarEvento.habilitarOpciones(true);
	    agasajados = new ArrayList(); 
	    invitados = new ArrayList(); 
	    anfitriones = new ArrayList(); 
		this.ventanaConsultarEvento.setListadoAgasajado(new VentanaAgasajadosModeloTabla(agasajados));
		this.ventanaConsultarEvento.setListadoInvitados(new VentanaInvitadosModeloTabla(invitados));
		this.ventanaConsultarEvento.setListadoAnfitriones(new VentanaAnfitrionesModeloTabla(anfitriones));
		
	}

}
